package com.bjsxt.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bjsxt.constants.Constants;
import com.bjsxt.dto.CheckItemDto;
import com.bjsxt.vo.DataGridView;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bjsxt.mapper.CheckItemMapper;
import com.bjsxt.domain.CheckItem;
import com.bjsxt.service.CheckItemService;
@Service
public class CheckItemServiceImpl implements CheckItemService{

    @Autowired
    private CheckItemMapper checkItemMapper;

    // 分页查询
    @Override
    public DataGridView listCheckItemPage(CheckItemDto checkItemDto) {
        // 分页
        Page<CheckItem> page = new Page<>(checkItemDto.getPageNum(),checkItemDto.getPageSize());
        // 条件构造器
        QueryWrapper<CheckItem> qw = new QueryWrapper<>();
        // 根据检查项目名模糊查询
        qw.like(StringUtils.isNotBlank(checkItemDto.getCheckItemName()),CheckItem.COL_CHECK_ITEM_NAME,checkItemDto.getCheckItemName());
        // 根据关键字模糊查询
        qw.like(StringUtils.isNotBlank(checkItemDto.getKeywords()),CheckItem.COL_KEYWORDS,checkItemDto.getKeywords());
        // 根据项目类型进行查询
        qw.eq(StringUtils.isNotBlank(checkItemDto.getTypeId()),CheckItem.COL_TYPE_ID,checkItemDto.getTypeId());
        // 根据状态进行查询
        qw.eq(StringUtils.isNotBlank(checkItemDto.getStatus()),CheckItem.COL_STATUS,checkItemDto.getStatus());
        checkItemMapper.selectPage(page,qw);
        return new DataGridView(page.getTotal(),page.getRecords());
    }

    // 根据id获取信息
    @Override
    public CheckItem getOne(Long checkItemId) {
        return checkItemMapper.selectById(checkItemId);
    }

    // 添加
    @Override
    public int addCheckItem(CheckItemDto checkItemDto) {
        CheckItem checkItem = new CheckItem();
        BeanUtil.copyProperties(checkItemDto,checkItem);
        // 设置创建人
        checkItem.setCreateBy(checkItemDto.getSimpleUser().getUserName());
        // 设置创建时间
        checkItem.setCreateTime(DateUtil.date());
        return checkItemMapper.insert(checkItem);
    }

    // 修改
    @Override
    public int updateCheckItem(CheckItemDto checkItemDto) {
        CheckItem checkItem = new CheckItem();
        BeanUtil.copyProperties(checkItemDto,checkItem);
        // 设置修改人
        checkItem.setUpdateBy(checkItemDto.getSimpleUser().getUserName());
        return checkItemMapper.updateById(checkItem);
    }

    // 删除
    @Override
    public int deleteCheckItemByIds(Long[] checkItemIds) {
        if (checkItemIds.length>0){
            return checkItemMapper.deleteBatchIds(Arrays.asList(checkItemIds));
        }
        return 0;
    }

    // 查询全部有效的
    @Override
    public List<CheckItem> queryAllCheckItem() {
        // 条件构造器
        QueryWrapper<CheckItem> qw = new QueryWrapper<>();
        qw.eq(CheckItem.COL_STATUS, Constants.STATUS_TRUE);
        return checkItemMapper.selectList(qw);
    }
}
